home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / gconv.h < prev    next >
C/C++ Source or Header  |  2009-10-07  |  5KB  |  181 lines

  1. /* Copyright (C) 1997-1999, 2000-2002, 2007 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.  
  4.    The GNU C Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Lesser General Public
  6.    License as published by the Free Software Foundation; either
  7.    version 2.1 of the License, or (at your option) any later version.
  8.  
  9.    The GNU C Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Lesser General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Lesser General Public
  15.    License along with the GNU C Library; if not, write to the Free
  16.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17.    02111-1307 USA.  */
  18.  
  19. /* This header provides no interface for a user to the internals of
  20.    the gconv implementation in the libc.  Therefore there is no use
  21.    for these definitions beside for writing additional gconv modules.  */
  22.  
  23. #ifndef _GCONV_H
  24. #define _GCONV_H    1
  25.  
  26. #include <features.h>
  27. #define __need_mbstate_t
  28. #define __need_wint_t
  29. #include <wchar.h>
  30. #define __need_size_t
  31. #define __need_wchar_t
  32. #include <stddef.h>
  33.  
  34. /* ISO 10646 value used to signal invalid value.  */
  35. #define __UNKNOWN_10646_CHAR    ((wchar_t) 0xfffd)
  36.  
  37. /* Error codes for gconv functions.  */
  38. enum
  39. {
  40.   __GCONV_OK = 0,
  41.   __GCONV_NOCONV,
  42.   __GCONV_NODB,
  43.   __GCONV_NOMEM,
  44.  
  45.   __GCONV_EMPTY_INPUT,
  46.   __GCONV_FULL_OUTPUT,
  47.   __GCONV_ILLEGAL_INPUT,
  48.   __GCONV_INCOMPLETE_INPUT,
  49.  
  50.   __GCONV_ILLEGAL_DESCRIPTOR,
  51.   __GCONV_INTERNAL_ERROR
  52. };
  53.  
  54.  
  55. /* Flags the `__gconv_open' function can set.  */
  56. enum
  57. {
  58.   __GCONV_IS_LAST = 0x0001,
  59.   __GCONV_IGNORE_ERRORS = 0x0002
  60. };
  61.  
  62.  
  63. /* Forward declarations.  */
  64. struct __gconv_step;
  65. struct __gconv_step_data;
  66. struct __gconv_loaded_object;
  67. struct __gconv_trans_data;
  68.  
  69.  
  70. /* Type of a conversion function.  */
  71. typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
  72.                 __const unsigned char **, __const unsigned char *,
  73.                 unsigned char **, size_t *, int, int);
  74.  
  75. /* Type of a specialized conversion function for a single byte to INTERNAL.  */
  76. typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
  77.  
  78. /* Constructor and destructor for local data for conversion step.  */
  79. typedef int (*__gconv_init_fct) (struct __gconv_step *);
  80. typedef void (*__gconv_end_fct) (struct __gconv_step *);
  81.  
  82.  
  83. /* Type of a transliteration/transscription function.  */
  84. typedef int (*__gconv_trans_fct) (struct __gconv_step *,
  85.                   struct __gconv_step_data *, void *,
  86.                   __const unsigned char *,
  87.                   __const unsigned char **,
  88.                   __const unsigned char *, unsigned char **,
  89.                   size_t *);
  90.  
  91. /* Function to call to provide transliteration module with context.  */
  92. typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
  93.                       __const unsigned char *,
  94.                       unsigned char *, unsigned char *);
  95.  
  96. /* Function to query module about supported encoded character sets.  */
  97. typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
  98.                     size_t *);
  99.  
  100. /* Constructor and destructor for local data for transliteration.  */
  101. typedef int (*__gconv_trans_init_fct) (void **, const char *);
  102. typedef void (*__gconv_trans_end_fct) (void *);
  103.  
  104. struct __gconv_trans_data
  105. {
  106.   /* Transliteration/Transscription function.  */
  107.   __gconv_trans_fct __trans_fct;
  108.   __gconv_trans_context_fct __trans_context_fct;
  109.   __gconv_trans_end_fct __trans_end_fct;
  110.   void *__data;
  111.   struct __gconv_trans_data *__next;
  112. };
  113.  
  114.  
  115. /* Description of a conversion step.  */
  116. struct __gconv_step
  117. {
  118.   struct __gconv_loaded_object *__shlib_handle;
  119.   __const char *__modname;
  120.  
  121.   int __counter;
  122.  
  123.   char *__from_name;
  124.   char *__to_name;
  125.  
  126.   __gconv_fct __fct;
  127.   __gconv_btowc_fct __btowc_fct;
  128.   __gconv_init_fct __init_fct;
  129.   __gconv_end_fct __end_fct;
  130.  
  131.   /* Information about the number of bytes needed or produced in this
  132.      step.  This helps optimizing the buffer sizes.  */
  133.   int __min_needed_from;
  134.   int __max_needed_from;
  135.   int __min_needed_to;
  136.   int __max_needed_to;
  137.  
  138.   /* Flag whether this is a stateful encoding or not.  */
  139.   int __stateful;
  140.  
  141.   void *__data;        /* Pointer to step-local data.  */
  142. };
  143.  
  144. /* Additional data for steps in use of conversion descriptor.  This is
  145.    allocated by the `init' function.  */
  146. struct __gconv_step_data
  147. {
  148.   unsigned char *__outbuf;    /* Output buffer for this step.  */
  149.   unsigned char *__outbufend; /* Address of first byte after the output
  150.                  buffer.  */
  151.  
  152.   /* Is this the last module in the chain.  */
  153.   int __flags;
  154.  
  155.   /* Counter for number of invocations of the module function for this
  156.      descriptor.  */
  157.   int __invocation_counter;
  158.  
  159.   /* Flag whether this is an internal use of the module (in the mb*towc*
  160.      and wc*tomb* functions) or regular with iconv(3).  */
  161.   int __internal_use;
  162.  
  163.   __mbstate_t *__statep;
  164.   __mbstate_t __state;    /* This element must not be used directly by
  165.                any module; always use STATEP!  */
  166.  
  167.   /* Transliteration information.  */
  168.   struct __gconv_trans_data *__trans;
  169. };
  170.  
  171.  
  172. /* Combine conversion step description with data.  */
  173. typedef struct __gconv_info
  174. {
  175.   size_t __nsteps;
  176.   struct __gconv_step *__steps;
  177.   __extension__ struct __gconv_step_data __data __flexarr;
  178. } *__gconv_t;
  179.  
  180. #endif /* gconv.h */
  181.